home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / probots.arc / LEADER.PR < prev    next >
Text File  |  1991-04-28  |  2KB  |  66 lines

  1.   PROCEDURE LEADER;
  2.     { Based on a C-Robot by John Smolin }
  3.     { Strategy: Lead the target so robot can kill foes that move fast. }
  4.   VAR
  5.     x, orange, ox, dir, Range, rlead : Integer;
  6.  
  7.   BEGIN {Leader Main}
  8.     IF loc_x > 500
  9.     THEN drive(180, 100)
  10.     ELSE drive(0, 100);
  11.     x := 336;
  12.     rlead := 50;
  13.     REPEAT {Until Dead or Winner}
  14.       x := x+344;
  15.       Range := scan(x, 8);
  16.       WHILE (Range = 0) DO {find a target}
  17.         BEGIN
  18.           x := x+16;
  19.           Range := scan(x, 8);
  20.         END;
  21.       cannon(x, Range); {blast him!}
  22.       dir := x;
  23.       IF (Range > 200) THEN drive(x, 100); {follow him}
  24.       Range := scan(x, 8);
  25.       WHILE (Range > 0) DO
  26.         BEGIN 
  27.           IF (Range > 200) THEN
  28.             BEGIN 
  29.               ox := x;
  30.               orange := Range;
  31.               IF scan(x-4, 4) > 0 THEN x := x-4;
  32.               IF scan(x-2, 2) > 0 THEN x := x-2;
  33.               IF scan(x-1, 1) > 0 THEN x := x-1;
  34.               Range := scan(x, 10);
  35.               IF (Range > 0) THEN
  36.                 cannon(x+(x-ox)*Range DIV 200, Range+(Range-orange+rlead)*Range DIV 275);
  37.               IF (speed < 51) OR (((x-dir)*(x-dir)) > 400) THEN
  38.                 BEGIN
  39.                   dir := x;
  40.                   drive(x, 100);
  41.                   rlead := 25;
  42.                 END
  43.               ELSE rlead := 50;
  44.             END
  45.           ELSE
  46.             BEGIN
  47.               x := x+20;
  48.               WHILE (Range < 800) DO
  49.                 BEGIN
  50.                   x := x+340;
  51.                   Range := scan(x, 10);
  52.                   WHILE (Range = 0) DO {find him}
  53.                     BEGIN
  54.                       x := x+20;
  55.                       Range := scan(x, 10);
  56.                     END;
  57.                   cannon(x, Range); {blast him!}
  58.                   dir := x;
  59.                   IF (speed < 50) OR (Range > 200) THEN drive(x, 100); {follow him}
  60.                 END;
  61.             END;
  62.         END; 
  63.     UNTIL Dead OR Winner;
  64.   END; {Leader Main}
  65.  
  66.